package mybag1;

import java.util.LinkedList;

public class MyStack {
	/*
	 * /第1题：使用LinkedList模拟一个堆栈数据结构,写一个 MyStack 类，表示“栈”这种数据结构。
	 * 栈在表示上，就如同一个单向开口的盒子，每当有新数据进入时，都是进入栈顶。其基 本操作为 push 和 pop。push 表示把一个元素加入栈顶，pop
	 * 表示把栈顶元素弹出。 示意图如下： 栈的特点：先进后出。 栈的基本操作： 1） push(Object o)：表示把元素放入栈 2） Object
	 * pop()：返回栈顶元素，并把该元素从栈中删除。如果栈为空，则返回 null 值 3） Object
	 * peek()：返回栈顶元素，但不把该元素删除。如果栈为空，则返回 null 值。 4） boolean isEmpty()：判断该栈是否为空 5） int
	 * size()：返回该栈中元素的数量
	 */
	static LinkedList list = new LinkedList();

	public static void push(Object o) {
		list.add(o);
	}

	public static Object pop() {
		return list.removeLast();
	}

	public static Object peek() {
		return list.getLast();
	}

	public static boolean isEmpty() {
		return list.isEmpty();
	}

	public static int size() {
		return list.size();
	}

	public static void main(String[] args) {
		push("11");
		push("22");
		push("33");
		push("44");

		System.out.println("栈顶元素为：" + peek());

		System.out.println("该栈是否为空：" + isEmpty());

		System.out.println("该栈的数量为：" + size());

		System.out.println(pop());
		System.out.println(pop());
		System.out.println(pop());
		System.out.println(pop());
		System.out.println("该栈的数量为：" + size());
	}
}
